package com.xherorlclass;

import com.xherorlclass.discovery.RegistryConfig;
import lombok.extern.slf4j.Slf4j;

/**
 * @author ：Xherorl
 * @date ：Created in 2023/8/24 9:31
 * @description：
 */
@Slf4j
public class ConsumerApplication {
    public static void main(String[] args) {
        // 想尽一切办法获取代理对象,使用ReferenceConfig进行封装
        // reference一定用生成代理的模板方法，get()
        ReferenceConfig<HelloXherorlRpc> reference = new ReferenceConfig<>();
        reference.setInterface(HelloXherorlRpc.class);

        // 代理做了些什么?
        // 1、连接注册中心
        // 2、拉取服务列表
        // 3、选择一个服务并建立连接
        // 4、发送请求，携带一些信息（接口名，参数列表，方法的名字），获得结果
        XherorlRpcBootstrap.getInstance()
                .application("first-rpc-consumer")
                .registry(new RegistryConfig("zookeeper://127.0.0.1:2181"))
                .serialize("jdk")
                .compress("gzip")
//                .group("primary")
                .reference(reference);

        // 获取一个代理对象
        HelloXherorlRpc helloXherorlRpc = reference.get();
        String sayHi = helloXherorlRpc.sayHi("你好");
        log.info("sayHi --> {}", sayHi);
    }
}
